package main

import (
	"time"

	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/dialog"
	"fyne.io/fyne/v2/storage"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.New()

	// 创建启动画面
	splash := a.NewWindow("")
	splash.SetContent(widget.NewLabel("PPT and AI"))
	splash.Show()

	// 2秒后关闭启动画面并打开主窗口
	go func() {
		time.Sleep(2 * time.Second)
		splash.Close()

		// 创建主窗口
		mainWin := a.NewWindow("AI PPT Reader")
		mainWin.Resize(fyne.NewSize(1024, 768))

		// 提前声明 statusBar 变量
		var statusBar *widget.Label

		// 创建菜单栏
		fileMenu := fyne.NewMenu("文件",
			fyne.NewMenuItem("打开PPT", func() {
				fileDialog := dialog.NewFileOpen(func(reader fyne.URIReadCloser, err error) {
					if err == nil && reader != nil {
						filePath := reader.URI().String()
						if statusBar != nil {
							statusBar.SetText("已打开: " + filePath)
						}
						// TODO: 在此添加PPT加载逻辑
					}
				}, mainWin)
				fileDialog.SetFilter(storage.NewExtensionFileFilter([]string{".pptx"}))
				fileDialog.Show()
			}),
		)
		mainWin.SetMainMenu(fyne.NewMainMenu(fileMenu))

		// 主界面布局
		// 使用 container.NewStack() 替代 container.NewMax()
		workArea := container.NewStack() // 预留工作区
		sidebar := container.NewVBox(
			widget.NewLabel("AI对话区"),
			// 使用 container.NewMax 包裹 widget.NewMultiLineEntry 使其填充父级容器
			container.NewMax(widget.NewMultiLineEntry()),
		) // 右侧边栏

		// 使用SplitContainer划分区域
		mainContent := container.NewHSplit(
			workArea,
			container.NewHBox(sidebar),
		)
		mainContent.SetOffset(0.8) // 右侧边栏宽度200px（1024*0.2≈205）

		// 状态栏
		statusBar = widget.NewLabel("就绪")

		// 创建菜单栏

		// 组合所有组件
		mainWin.SetContent(container.NewBorder(
			nil,       // top
			statusBar, // bottom
			nil,       // left
			nil,       // right
			mainContent,
		))

		mainWin.Show()
	}()

	a.Run()
}
